package 缓冲流;

import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

/**
 * 将乱序出师表拷贝到另一个文件（每行乱序）
 */

public class chushibiaoDemo {
    public static void main(String[] args)  {
        try( //释放资源的方法，这样就不用在finally里面写了，会自动关闭
                FileReader file=new FileReader("app/src/book");
                //将字符输入流包装成缓冲输入流
                BufferedReader file1=new BufferedReader(file);

                FileWriter writer=new FileWriter("app/src/output.txt",true);
                //将字符输出流包装成缓冲输出流
                BufferedWriter writer1=new BufferedWriter(writer);
                ) {
            //创建一个List集合装每一行数据
            List<String> list=new ArrayList<>();
            String line;
                //要是文本读完了，就返回null
                while ((line= file1.readLine())!=null){
                    //获取每一行的序号
                    list.add(line);
            }
//            //对list集合中的数据按照首字母升序
//            Collections.sort(list);//字符串会默认按照首字母升序
//            System.out.println(list);
//
//            //遍历list集合将文本输出文件
//            for (String s : list) {
//                writer1.write(s);
//                //换行
//                writer1.newLine();
//            }

            //数字为中文的情况
                List<String> list1=new ArrayList<>();
                //将一到十都放入一个集合中（转换为索引值来比较）
                Collections.addAll(list1,"一","二","三","四","五","六","七","八","九","十");
                //自定义比较器进行排序
                Collections.sort(list, new Comparator<String>() {
                    @Override
                    public int compare(String o1, String o2) {
                        //indexof是用来取索引值的方法
                        //这里不能使用charAt方法，charAt放回的是字符，而list里面是字符串，要使用substring
//                        return list1.indexOf(o1.charAt(0))-list1.indexOf(o2.charAt(0));
                        return  list1.indexOf(o1.substring(0,1))-list1.indexOf(o2.substring(0,1));
                    }
                });
                        for (String s : list) {
                writer1.write(s);
                //换行
                writer1.newLine();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }


    }
}
